//
// Created by sjjmw on 3/24/2022.
//
#include "iostream"
#include "vector"
#include "list"
#include "algorithm"
#include "string"
#include "unordered_map"
#include "cmath"
#include<iomanip>
#include "string"
#include "map"
#include "list"
//核心思路是模拟报数，出队的做标记，扫描的时候跳过
struct Sol{
    void handle(int n){
        std::vector<int> vec(n);
        for(int i=0;i<n;i++){
            std::cin>>vec[i];
        }
        int cnt=0;
        while(1){
//            for(auto v:vec){
//                printf("%d ",v);
//            }
//            printf("\n");

            bool all_same= true;
            for(int i=1;i<vec.size();i++){

                if(vec[i]!=vec[0]){
                    all_same=false;
                    break;
                }
            }
            if(all_same){
                break;
            }
            for(auto&i:vec){
                i/=2;
            }
            auto vec0=vec[0];

            for(int i=1;i<vec.size();i++){
                vec[i-1]+=vec[i];
                if(vec[i-1]%2==1){
                    vec[i-1]++;
                    cnt++;
                }
            }
            vec[vec.size()-1]+=vec0;
            if(vec[vec.size()-1]%2==1){
                vec[vec.size()-1]++;
                cnt++;
            }

//            {
//                for(auto v:vec){
//                    printf("%d ",v);
//                }
//                printf("\n");
//
//            }
//            for(auto &v:vec){
//
//                if(v%2==1){
//                    v++;
//                    cnt++;
//                }
//            }

//            if(vec[vec.size()-1]%2==1){
//                vec[vec.size()-1]++;
//            }


        }
        printf("%d\n",cnt);
    }
};
int main(){
    int a,b,c;
//    std::string str1,str2;
    while (std::cin>>a){
        Sol().handle(a);
    }
    return 0;
}